package com.wlyuan.open.vo.push.order;

import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

@Data
public class OrderDetailVO implements Serializable {


    private static final long serialVersionUID = -5089320590097227133L;
    @ApiModelProperty("订单ID")
    private Long orderId;

    @ApiModelProperty("单据编号")
    private String orderNo;

    @ApiModelProperty("合同号")
    private String contractNo;

    @ApiModelProperty("发货方名称")
    private String customerName;

    @ApiModelProperty("发货时间")
    private LocalDateTime fromTime;

    @ApiModelProperty("要求到货日期")
    private LocalDateTime toTime;

    @ApiModelProperty("收货方名称")
    private String consigneeName;

    @ApiModelProperty("收货地址")
    private OrderAddressVO toAddress;

    @ApiModelProperty("发货地址")
    private OrderAddressVO fromAddress;

    @ApiModelProperty("总重量")
    private BigDecimal totalWeight;

    @ApiModelProperty("总体积")
    private BigDecimal totalVolume;

    @ApiModelProperty("总价值")
    private BigDecimal totalValue;

    @ApiModelProperty("总数量")
    private Integer totalQuantity;

    @ApiModelProperty("总项数")
    private Long totalSize;

    @ApiModelProperty("价值补差")
    private BigDecimal differenceValue;

    @ApiModelProperty("重量补差")
    private BigDecimal differenceWeight;

    @ApiModelProperty("体积补差")
    private BigDecimal differenceVolume;

    private BigDecimal calculateWeight;
    private BigDecimal calculateValue;
    private BigDecimal calculateVolume;

    @ApiModelProperty("订单状态")
    private Integer status;

    @ApiModelProperty("订单状态描述")
    private String statusName;

    @ApiModelProperty("物品")
    private List<OrderGoodsVO> goodsList;

    @ApiModelProperty("附件")
    private List<AttachmentVO> attachments;

    @ApiModelProperty(value = "车辆")
    private OrderVehicleVO vehicle;

    @ApiModelProperty(value = "计费模式", required = true, allowableValues = "1,2,3")
    private Integer billingMode;
    private String billingModeName;

    @ApiModelProperty(value = "计价单位", required = true, allowableValues = "1-17")
    private Integer billingUnit;
    private String billingUnitName;

    @ApiModelProperty(value = "是否保价", required = true)
    private Boolean insure;

    @ApiModelProperty(value = "是否提货", required = true)
    private Boolean pick;

    @ApiModelProperty(value = "是否送货", required = true)
    private Boolean deliver;

    @ApiModelProperty(value = "是否装货", required = true)
    private Boolean load;

    @ApiModelProperty(value = "是否卸货", required = true)
    private Boolean unload;

    @ApiModelProperty(value = "货物分类", required = true, allowableValues = "1,2,3")
    private Integer cargoType;
    private String cargoTypeName;

    @ApiModelProperty(value = "包装方式", required = true)
    private Integer packageMode;
    private String packageModeName;

    @ApiModelProperty("运输模式")
    private Integer transportMode;
    private String transportModeName;

    @ApiModelProperty("签收信息")
    private OrderSignVO sign;

    @ApiModelProperty("是否已签收")
    private Boolean signed;

    @ApiModelProperty("签收时间")
    private LocalDateTime signTime;

    @ApiModelProperty("回单信息")
    private OrderReceiptVO receipt;

    @ApiModelProperty("是否已回单")
    private Boolean receipted;

    @ApiModelProperty("回单时间")
    private LocalDateTime receiptTime;

    @ApiModelProperty("是否绑定设备")
    private Boolean hasDevice;

    @ApiModelProperty("是否有快递信息")
    private Boolean hasExpress;

    @ApiModelProperty("设备信息")
    private OrderDeviceVO device;

    @ApiModelProperty("是否生成证书")
    private Boolean hasCert;

    @ApiModelProperty("设备号")
    private String deviceCode;

    @ApiModelProperty("是否开通证书")
    private Boolean generateCert;

    @ApiModelProperty("证书id")
    private Long certId;

    @ApiModelProperty("备注信息")
    private String remarks;

    @ApiModelProperty("创建人")
    private Long createBy;

    @ApiModelProperty("创建人名称")
    private String creatorName;

    @ApiModelProperty("创建时间")
    private LocalDateTime createAt;

    @ApiModelProperty("关单人")
    private Long closeBy;

    @ApiModelProperty("关单原因")
    private String closeReason;

    @ApiModelProperty("关单时间")
    private LocalDateTime closeAt;

    @ApiModelProperty("是否已关单")
    private Boolean closed;

    @ApiModelProperty("租户ID")
    private Long tenantId;

    @ApiModelProperty("扩展信息")
    private JSONObject echo;

    @ApiModelProperty("费用")
    private BigDecimal totalFee;

    @ApiModelProperty("接收时间")
    private LocalDateTime acceptTime;

    @ApiModelProperty("分数")
    private OrderScoreVO score;

}
